function [media_cortes]=paralelismo_gramatico2(xbin,ubl,dbla,dlin)
warning off all
[m,n]=size(xbin);
xcontorno=zeros(m,n);
centro=ubl+round((dbla-ubl)/2);
for s=1:n
    clear f c
    [f,c]=find(xbin(:,s)==0);
    if isempty(f)==0
        f1=f(find(f<dlin));
        valor=min(f1);
        xcontorno(valor,s)=1;
    end
end
[niv,num]=bwlabel(xcontorno,8);
puntos_sup=[];
puntos_inf=[];
for s=1:num
    [f,c]=find(niv==s);
    if length(f)>4
        c2=c(find(f==min(f)));
        cc=sum([min(c2):max(c2)])/length([min(c2):max(c2)]);
        fila1=min(f)+1;
        t1=min(c2);
        while (t1<=n)&&(isempty(find(xbin(fila1,[t1-2:t1+2])==0))==0)
            t1=t1+((min(find((xbin(fila1,[t1-2:t1+2]))==0))-3));
            fila1=fila1+1;
        end
        fila1=fila1-1;
        t11=t1;
        while (isempty(find(xbin(fila1,t11)==0))==0)
            t11=t11+1;
        end
        t11=t11-1;
        c1=sum([t1:t11])/length([t1:t11]);
        
        
        
        fila2=min(f)+1;
        t2=max(c2);
        while (t2<=n)&&(isempty(find(xbin(fila2,[t2-2:t2+2])==0))==0)
            t2=t2+((min(find((xbin(fila2,[t2-2:t2+2]))==0))-3));
            fila2=fila2+1;
        end
        fila2=fila2-1;
        t22=t2;
        while (isempty(find(xbin(fila2,t22)==0))==0)
            t22=t22+1;
        end
        t22=t22-1;
        c2=sum([t2:t22])/length([t2:t22]);
        if c1~=c2
            puntos_sup=[puntos_sup min(f) min(c2)];
            puntos_inf=[puntos_inf fila1 c1];
            puntos_sup=[puntos_sup min(f) max(c2)];
            puntos_inf=[puntos_inf fila2 c2];
        else
            puntos_sup=[puntos_sup min(f) cc];
            puntos_inf=[puntos_inf fila1 c1];
        end        
    end
end



%buscamos los puntos de corte de las rectas%
cortes=[];cortes2=[];
for s=1:2:length(puntos_sup)-2
    wx=[];wy=wx;
    m1=(puntos_inf(s)-puntos_sup(s))/(puntos_inf(s+1)-puntos_sup(s+1));
    m2=(puntos_inf(s+2)-puntos_sup(s+2))/(puntos_inf(s+3)-puntos_sup(s+3));
    ecuacion=strcat(num2str(m1),'*(x-',num2str(puntos_sup(s+1)),')+',num2str(puntos_sup(s)),'=',num2str(m2),'*(x-',num2str(puntos_sup(s+3)),')+',num2str(puntos_sup(s+2)));
    wx=solve(ecuacion,'x');    
    wy= m1*(wx-puntos_sup(s+1))+puntos_sup(s);
    x=inf;
    wx=subs(wx,x);
    if ((isempty(wx)==0)&&(vpa(wx)~='(NaN)')&&(vpa(wy)~='(NaN)')&&(m1~=inf)&&(m2~=inf)&&(m1~=NaN)&&(m2~=NaN)&&(abs(double(wx))~=inf)&&(abs(double(wy))~=inf))
        cortes=[cortes wy wx];
        if double(wy)>puntos_inf(s)
            cortes2=[cortes2 wy puntos_sup(s) wx puntos_sup(s+1) wy wx];
        else
            cortes2=[cortes2 puntos_inf(s) wy puntos_inf(s+1) wx wy wx];
        end
        
        
    end
end
if isempty(cortes)==0
    lineas=double(cortes);
    d=[];
    for s=1:2:length(lineas)
        d=[d abs(centro-lineas(s))];
    end
else
    d=0;
end
media_cortes=mean(d);



%representacion%
clear lineas;
lineas=double(cortes2);
imshow(xbin);
hold on
for s=1:6:length(lineas)-6
    if s==1
        line([lineas(s+2), lineas(s+3)],[lineas(s), lineas(s+1)],'Color','r','LineWidth',3);
        plot(lineas(s+5),lineas(s+4),'bo');
    else
        if lineas(s-1)>lineas(s+3)
            line([lineas(s-1), lineas(s+2)],[lineas(s-2), lineas(s)],'Color','r','LineWidth',3);
            plot(lineas(s+5),lineas(s+4),'bo');
        else
            line([lineas(s-1), lineas(s+3)],[lineas(s-2), lineas(s+1)],'Color','r','LineWidth',3);
            plot(lineas(s+5),lineas(s+4),'bo');
        end
    end
end

hold off